/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ar.edu.unicen.twitter.suggest.backend.recommendation.Ranking;

import ar.edu.unicen.twitter.suggest.commons.dtos.Usuario;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *
 * @author Alex
 */
public class RankingUsuariosIS implements RankingUsuarios{

    @Override
    public Map<Usuario, Double> rank(List<Usuario> usuarios) {
        System.out.println("IS map...");
        Map<Usuario, Double> scores = new HashMap<Usuario, Double>(usuarios.size());
        System.out.println("IS MAP!");
        for(Usuario usuario:usuarios){
            scores.put(usuario,RankingUsuariosIS.getIS(usuario));
            if(scores.size()%1000 ==0)
                System.out.println("IS: ("+scores.size()+"/"+usuarios.size()+") = "+scores.get(usuario));
        }
        return scores;
    }
    
    public static double getIS(Usuario candidato){
        double score = 0.0;
        long seguidores = candidato.getFollowersCount();
        long seguidos = candidato.getFollowsCount();
        if(seguidores+seguidos > 0)
        {
            score = 0.5*(1+((double)seguidores-seguidos)/(seguidores+seguidos));
        }
        return score;
    }
}
